Freeze property notification. Handle the gtk-color-scheme xsetting being
authorMatthias Clasen <mclasen@redhat.com>
Thu, 22 Mar 2007 21:09:08 +0000 (21:09 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Thu, 22 Mar 2007 21:09:08 +0000 (21:09 +0000)
2007-03-22  Matthias Clasen  <mclasen@redhat.com>

        * gtk/gtksettings.c (merge_color_scheme): Freeze property
        notification.
        * gtk/gtksettings.c (_gtk_settings_handle_event): Handle
        the gtk-color-scheme xsetting being unset.

        * gtk/gtkrc.c (gtk_rc_reparse_all_for_settings): Handle
        recursion locally.

svn path=/trunk/; revision=17553

ChangeLog
gtk/gtkrc.c
gtk/gtksettings.c

index be5cb58645acfed3313558d4a6b07ccd3a063504..5ce5abb3d45f1be3f0a8cd99ecd9aa8cd20c4490 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2007-03-22  Matthias Clasen  <mclasen@redhat.com>
+
+       * gtk/gtksettings.c (merge_color_scheme): Freeze property
+       notification.
+       * gtk/gtksettings.c (_gtk_settings_handle_event): Handle
+       the gtk-color-scheme xsetting being unset.
+
+       * gtk/gtkrc.c (gtk_rc_reparse_all_for_settings): Handle
+       recursion locally.
+
 2007-03-21  Matthias Clasen  <mclasen@redhat.com>
 
        * gtk/gtkprintoperation-unix.c: Remove leftover debug spew.
index f5cecc397d839eb3bddbbea313e3883a23bf5540..41f2c7347d4a38c660141bbe8eb28bbcd9ea9618 100644 (file)
@@ -663,8 +663,7 @@ gtk_rc_color_hash_changed (GtkSettings  *settings,
   
   g_object_get (settings, "color-hash", &context->color_hash, NULL);
 
-  if (!context->reloading)
-    gtk_rc_reparse_all_for_settings (settings, TRUE);
+  gtk_rc_reparse_all_for_settings (settings, TRUE);
 }
 
 static GtkRcContext *
@@ -1717,6 +1716,9 @@ gtk_rc_reparse_all_for_settings (GtkSettings *settings,
 
   context = gtk_rc_context_get (settings);
 
+  if (context->reloading)
+    return FALSE;
+
   if (!force_load)
     {
       /* Check through and see if any of the RC's have had their
index c13748e875d03b268e753b33aa1d7a2b55f20b3b..0561bda3760394a3e713526dab68ccb9c57c98c9 100644 (file)
@@ -1697,18 +1697,17 @@ _gtk_settings_handle_event (GdkEventSetting *event)
  
   if (pspec) 
     {
-      property_id =  pspec->param_id;
+      property_id = pspec->param_id;
 
       if (property_id == PROP_COLOR_SCHEME)
         {
           GValue value = { 0, };
 
           g_value_init (&value, G_TYPE_STRING);
-          if (gdk_screen_get_setting (settings->screen, pspec->name, &value))
-            {
-              merge_color_scheme (settings, &value, GTK_SETTINGS_SOURCE_XSETTING);
-              g_value_unset (&value);
-            }
+          if (!gdk_screen_get_setting (settings->screen, pspec->name, &value))
+            g_value_set_static_string (&value, "");
+          merge_color_scheme (settings, &value, GTK_SETTINGS_SOURCE_XSETTING);
+          g_value_unset (&value);
         }
 
       g_object_notify (G_OBJECT (settings), pspec->name);
@@ -2086,6 +2085,8 @@ merge_color_scheme (GtkSettings       *settings,
   ColorSchemeData *data;
   const gchar *colors;
 
+  g_object_freeze_notify (G_OBJECT (settings));
+
   colors = g_value_get_string (value);
 
   settings_update_color_scheme (settings);
@@ -2095,6 +2096,8 @@ merge_color_scheme (GtkSettings       *settings,
   
   if (update_color_hash (data, colors, source))
     g_object_notify (G_OBJECT (settings), "color-hash");
+
+  g_object_thaw_notify (G_OBJECT (settings));
 }
 
 static GHashTable *